package cn.bearspark.happening.provider.dao.mapper;

import cn.bearspark.framework.redis.starter.buffer.hash.un.RedisHashMapper;
import cn.bearspark.happening.provider.dao.co.VoteCO;
import cn.bearspark.happening.provider.dao.po.VotePO;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Update;

import java.util.List;
import java.util.Set;

/**
 * 投票的数据映射接口
 *
 * @author f
 */
@Mapper
public interface VoteMapper extends RedisHashMapper<VoteCO> {

    /**
     * 添加投票数据
     *
     * @param votePO 待添加的投票数据
     */
    void insert(VotePO votePO);

    /**
     * 增加指定投票的投票人数
     *
     * @param voteId 指定的投票 id
     */
    @Update("UPDATE t_happening_vote SET vote_num = vote_num + 1 WHERE vote_id = #{voteId}")
    void incrVoteNum(long voteId);

    @Override
    List<VoteCO> listHotData(Set<Long> voteIdSet);

    @Override
    List<VoteCO> listData(List<Long> voteIdList);

    /**
     * 删除指定的投票信息
     *
     * @param voteId 指定的投票 id
     */
    @Delete("DELETE FROM t_happening_vote WHERE vote_id = #{voteId}")
    void delete(long voteId);
}
